package com.ruoyi.common.core.page;

import com.github.pagehelper.PageInfo;
import com.ruoyi.common.constant.HttpStatus;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;

/**
 * @Description 表格分页数据泛型对象
 * @Author zouhuu
 * @Date 2022/8/21 18:11
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class TableDataInfoT<T> implements Serializable {

    private static final long serialVersionUID = 1L;

    /** 总记录数 */
    private long total;

    /** 列表数据 */
    private T rows;

    /** 消息状态码 */
    private int code;

    /** 消息内容 */
    private String msg;

    public static <T> TableDataInfoT<T> SUCCESS(T resp, int code, String msg) {
        TableDataInfoT<T> tTableDataInfoT = new TableDataInfoT<>();
        tTableDataInfoT.setCode(code);
        tTableDataInfoT.setRows(resp);
        tTableDataInfoT.setMsg(msg);
        return tTableDataInfoT;
    }

    public static <T> TableDataInfoT<T> SUCCESS(T resp, int code) {
        TableDataInfoT<T> tTableDataInfoT = new TableDataInfoT<>();
        tTableDataInfoT.setCode(code);
        tTableDataInfoT.setRows(resp);
        tTableDataInfoT.setMsg("查询成功");
        return tTableDataInfoT;
    }
    public static <T> TableDataInfoT<T> SUCCESS(T resp) {
        TableDataInfoT<T> tTableDataInfoT = new TableDataInfoT<>();
        tTableDataInfoT.setCode(HttpStatus.SUCCESS);
        tTableDataInfoT.setRows(resp);
        tTableDataInfoT.setMsg("查询成功");
        tTableDataInfoT.setTotal(new PageInfo((List) resp).getTotal());
        return tTableDataInfoT;
    }
    public static <T> TableDataInfoT<T> SUCCESS(T resp,Long total) {
        TableDataInfoT<T> tTableDataInfoT = new TableDataInfoT<>();
        tTableDataInfoT.setCode(HttpStatus.SUCCESS);
        tTableDataInfoT.setRows(resp);
        tTableDataInfoT.setMsg("查询成功");
        tTableDataInfoT.setTotal(total);
        return tTableDataInfoT;
    }
    public static <T> TableDataInfoT<T> ERROR(String msg) {
        TableDataInfoT<T> tTableDataInfoT = new TableDataInfoT<>();
        tTableDataInfoT.setCode(HttpStatus.ERROR);
        tTableDataInfoT.setRows(null);
        tTableDataInfoT.setMsg(msg);
        tTableDataInfoT.setTotal(0);
        return tTableDataInfoT;
    }


}
